package com.kgc.chen.day02;
import java.util.*;
public class chiHuoLianMeng {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String[] names=new String[4];//订餐人
        String[] dishMegs=new String[4];//所有餐品信息
        int[] times=new int[4];//送餐时间
        String[] address=new String[4];//地址
        int[] states=new int[4];//订单状态 0已定 1已完成
        double[] sumPrices=new double[4];//总金额
        //初始化2条订单信息
        names[0]="张青";
        dishMegs[0]="鱼香肉丝 1份";
        times[0]=12;
        address[0]="青塔";
        states[0]=1;
        sumPrices[0]=24;
        names[1]="张青";
        dishMegs[1]="红烧带鱼 2份";
        times[1]=12;
        address[1]="青塔";
        states[1]=0;
        sumPrices[1]=76;
        //数据主体一组餐品信息
        String[] dishName={"红烧带鱼","鱼香肉丝","时令蔬菜"};
        double[] prices={38,18,10};
        int[] praiseNum=new int[3];
        /*
        循环 do while
        循环操作
        显示菜单
        提示用户输入功能，并执行相应操作
        提示输入0返回
         */
        int num=-1;
        do {
            System.out.println("***************************");
            System.out.println("欢迎使用吃货联盟订餐系统");
            System.out.println("1.我要订餐");
            System.out.println("2.查看餐袋");
            System.out.println("3.删除订单");
            System.out.println("4.签收订单");
            System.out.println("5.我要点赞");
            System.out.println("6.退出系统");
            System.out.println("****************************");
            System.out.print("请选择：");
            int choose=input.nextInt();
            boolean flag=false;
            switch (choose){
                case 1:
                    System.out.println("**********我要订餐*********");
                    //查找要插入的位置
                    for (int i=0;i<names.length;i++){
                        //如果找到空位置记录下来
                        if (names[i]==null){
                            flag=true;
                            System.out.println("序号\t餐品名\t单价\t点餐数");
                            for (int j=0;j<dishName.length;j++){
                                String price=prices[j]+"元";
                                String praise=praiseNum[j]+"赞";
                                System.out.println((j+1)+"\t"+dishName[j]+"\t"+price+"\t"+praise);
                            }
                            //输入所选餐品编号及份数
                            System.out.println("请选择所选餐品编号");
                            int chooseDish=input.nextInt();
                            System.out.println("请选择份数");
                            int number=input.nextInt();
                            String disMeg=dishName[chooseDish-1]+""+number+"份";
                            //输入订餐人姓名
                            System.out.println("请输入订餐人姓名：");
                            String name=input.next();
                            //输入送餐时间
                            System.out.println("请输入送餐时间：");
                            int time=input.nextInt();
                            //如果输错了重复输入
                            while (time<10|time>20){
                                System.out.println("输入有误");
                                time=input.nextInt();
                            }
                            //输入送餐地址
                            System.out.println("输入地址：");
                            String addres=input.next();
                            //计算餐费
                            double sumPrice=prices[choose-1]*number;
                            //送餐费 当餐费达到50免6元送餐费
                            double deliCharge=sumPrice>=50?0:6;
                            //显示订单信息
                            System.out.println("订餐成功");
                            System.out.println("您定的是："+disMeg);
                            System.out.println("订餐人："+name);
                            System.out.println("送餐时间："+time+"点");
                            System.out.println("送餐地址："+addres);
                            System.out.println("餐费"+sumPrice+",送餐费"+deliCharge+"元");
                            System.out.println("总金额"+(sumPrice+deliCharge)+"元");
                            //保存数据
                            names[i]=name;
                            dishMegs[i]=disMeg;
                            times[i]=time;
                            address[i]=addres;
                            sumPrices[i]=sumPrice+deliCharge;
                            break;
                        }
                    }
                    //如果没找到空位置则提示信息
                    if (!flag){
                        System.out.println("您的餐袋已满");
                    }
                    //我要订餐
                    break;
                case 2:
                    System.out.println("查看餐袋");
                    System.out.println("序号\t订餐人\t所定餐品信息\t送餐时间\t送餐地址\t总金额\t状态");
                    for (int i=0;i<names.length;i++) {
                        if (names[i]!=null) {
                            String time = times[i] + "点";
                            String sumPrice = sumPrices[i] + "元";
                            String state = states[i] == 0 ? "已预订" : "已完成";
                            System.out.println((i + 1) + "\t" + names[i] + "\t\t" + dishMegs[i] + "\t" + time + "\t\t" + address[i] + "\t\t" + sumPrice + "\t" + state);
                        }
                    }
                    //查看餐袋
                    break;
                case 3:
                    //删除订单
                    System.out.println("*****删除订单******");
                    System.out.println("请输入要删除的订单");
                    int delId=input.nextInt();
                    int delIndex=-1;//删除订单下标
                    boolean isDelFind=false;//记录是否找到词条订单
                    //查找这条订单
                    for (int i=0;i<names.length;i++){
                        //找到此订单已签收，执行删除（先记录删除的序号）
                        //找到此订单但是此订单未签收，提示信息
                        if (names[i] != null && states[i]==1&&delId==i+1) {
                            delIndex=i;
                            isDelFind=true;
                            break;
                        }else if (names[i] != null && states[i]==0&&delId==i+1){
                            System.out.println("您选择的订单未签收，不能删除");
                            isDelFind=true;
                            break;
                        }
                    }
                    if (!isDelFind){
                        System.out.println("对不起，此条订单不存在！");
                        break;
                    }
                    if (delIndex!=-1){
                        for (int i=delIndex+1;i<names.length;i++){
                            names[i-1]=names[i];
                            dishMegs[i-1]=dishMegs[i];
                            times[i-1]=times[i];
                            address[i-1]=address[i];
                            states[i-1]=states[i];
                        }
                        names[names.length-1]=null;
                        dishMegs[names.length-1]=null;
                        times[names.length-1]=0;
                        address[names.length-1]=null;
                        states[names.length-1]=0;
                        System.out.println("订单删除成功！");
                    }
                    break;
                case 4:
                    //签收订单
                    System.out.println("*******订单签收******");
                    System.out.println("请输入要签收的订单：");
                    int sidnOrderId=input.nextInt();
                    boolean isFind=false;//记录是否找到订单 true找到  false没找到
                    for (int i=0;i<names.length;i++){
                        //找到状态是已完成，提示不能再次签收
                        //找到状态是已预订，提示可以签收
                        if (names[i] != null && states[i]==1&&sidnOrderId==i+1) {
                            System.out.println("对不起，您选择的订单已完成签收，不能再次签收");
                            isFind=true;
                            break;
                        }else if (names[i]!=null&&states[i]==0&&sidnOrderId==i+1){
                            states[i]=1;//状态值改为以完成
                            System.out.println("订单签收成功！");
                            isFind=true;
                            break;
                        }
                    }
                    //条件判断如果没有找到这条订单，采取提示没找到
                    if (!isFind){
                        System.out.println("对不起，此订单不存在！");
                    }
                    break;
                case 5:
                    //我要点赞
                    System.out.println("*********我要点赞***********");
                    System.out.println("序号\t餐品名\t单价\t点餐数");
                    for (int j=0;j<dishName.length;j++){
                        String price=prices[j]+"元";
                        String praise=praiseNum[j]+"赞";
                        System.out.println((j+1)+"\t"+dishName[j]+"\t"+price+"\t"+praise);
                    }
                    System.out.println("请输入要点赞的餐品序号：");
                    int dishId=input.nextInt();
                    praiseNum[dishId-1]++;
                    System.out.println("点赞成功");
                    System.out.println(dishName[dishId-1]+" "+praiseNum[dishId-1]+"赞");
                    break;
                case 6:
                    //退出系统
                    return;
                default:
                    break;
            }
            //当用户输入的是1-5之外的数字时，退出循环，否则将会提示输入0返回。
            if (choose<1|choose>5){
                break;
            }else {
                //提示输入0返回
                System.out.print("输入0返回：");
                num=input.nextInt();
            }
        }while (num==0);
        System.out.println("谢谢使用");
    }
}
